﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AudiPyme.DAL
{
    public class UsuariosFactory
    {

        //Método que asocia una empresa al usuario que la crea
        public static void AsociaEmpresaUsuario(string usuarioEmpresa, int IdEmpresa)
        {
            ModeloContainer agenteBD = new ModeloContainer();
            //Recogemos el objeto de usuario a través del nombre
            IQueryable<Usuarios> UsuarioQuery = from Usu in agenteBD.UsuariosEstablecer
                                                where Usu.Nombre.Equals(usuarioEmpresa)
                                                select Usu;
            if (UsuarioQuery.Count() != 0)
            {
                //Asociamos el usuario a la empresa
                Usuarios Usuario = UsuarioQuery.First();
                Usuario.Empresa = IdEmpresa;
                agenteBD.SaveChanges();
            }
        }

        //Método que pone el atributo empresa de los usuarios asociados a una empresa a NULL  
        public static void EliminarEmpresaUsuario(int IdEmpresa)
        {
            ModeloContainer agenteBD = new ModeloContainer();
            IQueryable<Usuarios> UsuariosEmpresa = from Usu in agenteBD.UsuariosEstablecer
                                                   where Usu.Empresa == IdEmpresa
                                                   select Usu;
            if (UsuariosEmpresa.Count() != 0)
            {
                foreach (Usuarios Usu in UsuariosEmpresa)
                {
                    Usu.Empresa = null;
                }
                agenteBD.SaveChanges();
            }
        }

        //Método que devuelve el identificador de empresa asociada a un usuario
        public static int EmpresaUsuario(String nombreUsuario)
        {
            try
            {
                ModeloContainer agenteBD = new ModeloContainer();
                IQueryable<int> Empresa = from u in agenteBD.UsuariosEstablecer
                                          where u.Nombre == nombreUsuario && u.Empresa != null
                                          select u.Empresa.Value;
                if (Empresa.Count() == 0)
                {
                    return 0;
                }
                else
                {
                    return Empresa.First();
                }
            }
            catch (Exception e1)
            {
                e1.ToString();
                return 0;
            }
        }
    }
}
